﻿using appABM.Models;
using AppABM.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace appABM.Controllers
{
    public class AlumnoController : Controller
    {
        private ContextoDatos db = new ContextoDatos();
        //
        // GET: /Alumno/

        public ActionResult Index()
        {
            return View(db.Alumnos.ToList());
        }

        [HttpGet]
        public ActionResult Alta() 
        {
            Alumno alumno = new Alumno();
            return View(model: alumno);
        }

        [HttpPost]
        public ActionResult Alta(string nombre, string apellido, string dni) 
        {
            Alumno alumno = new Alumno();
            alumno.Nombre = nombre;
            alumno.Apellido = apellido;
            alumno.Dni = dni;

            if (ValidarDatos(nombre, apellido, dni))
            {
                db.Alumnos.Add(alumno);
                db.SaveChanges();
                return RedirectToAction("Index","Alumno");
            }
            ViewBag.Error = true; // Alguno de los campos fue incorrecto y no se pudo cargar correctamente, el nuevo alumno.
            return View("Alta", model: alumno); // Se devuelen los datos del alumno a la vista del index.
        }

        public ActionResult Baja(long id)
        {
            Alumno alumno = db.Alumnos.Find(id);
            db.Alumnos.Remove(alumno);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        [HttpGet]
        public ActionResult Modificar(long id) 
        {
            Alumno alumno = db.Alumnos.Find(id);
            return View(model: alumno);
        }

        [HttpPost]
        public ActionResult Modificar(string nombre, string apellido, long id)
        {
            Alumno alumno = db.Alumnos.Find(id);
            alumno.Nombre = nombre;
            alumno.Apellido=apellido;
            if (ValidarDatos(nombre, apellido, alumno.Dni))
            {
                db.SaveChanges();
                return RedirectToAction("Index", "Alumno");
            }
            ViewBag.Error = true; // Alguno de los campos fue incorrecto y no se pudo modificar correctamente el nuevo alumno.
            return View("Modificar", model: alumno); // Se devuelen los datos del alumno a la vista de modificacion.
        }

        [HttpGet]
        public ActionResult Inscribirse(long id)
        {
            this.ViewBag.idAlumno = id;
            return View(model: db.Materias.ToList());
        }

        [HttpPost]
        public ActionResult Inscribirse(long idAlumno, long idMateria)
        {
            var alumno = db.Alumnos.Find(idAlumno);
            var materia = db.Materias.Find(idMateria);

            var inscripcion = new Inscripcion();
            inscripcion.Alumno = alumno;
            inscripcion.Materia = materia;
            inscripcion.NotaParcial1 = 0;
            inscripcion.NotaParcial2 = 0;

            this.db.Inscripciones.Add(inscripcion);
            this.db.SaveChanges();

            return RedirectToAction("Index", "Inscripcion");
        }

        // Metodo para validar los datos
        public bool ValidarDatos(string nombre, string apellido, string dni) 
        {
            if (!(string.IsNullOrWhiteSpace(nombre) || string.IsNullOrWhiteSpace(apellido) || string.IsNullOrWhiteSpace(dni)))
            {
                return true;
            }
            else return false;
        }
    }
}
